function xEvent(evt) {
    var e = evt || window.event;
    if (!e) {
        return;
    }
    this.type = e.type;
    this.target = e.target || e.srcElement;
    this.relatedTarget = e.relatedTarget;
    /*@cc_on if (e.type == 'mouseover') this.relatedTarget = e.fromElement;
  else if (e.type == 'mouseout') this.relatedTarget = e.toElement; @*/
    if (xDef(e.pageX)) {
        this.pageX = e.pageX;
        this.pageY = e.pageY;
    } else {
        if (xDef(e.clientX)) {
            this.pageX = e.clientX + xScrollLeft();
            this.pageY = e.clientY + xScrollTop();
        }
    }
    if (xDef(e.offsetX)) {
        this.offsetX = e.offsetX;
        this.offsetY = e.offsetY;
    } else {
        if (xDef(e.layerX)) {
            this.offsetX = e.layerX;
            this.offsetY = e.layerY;
        } else {
            this.offsetX = this.pageX - xPageX(this.target);
            this.offsetY = this.pageY - xPageY(this.target);
        }
    }
    this.keyCode = e.keyCode || e.which || 0;
    this.shiftKey = e.shiftKey;
    this.ctrlKey = e.ctrlKey;
    this.altKey = e.altKey;
    if (typeof e.type == "string") {
        if (e.type.indexOf("click") != -1) {
            this.button = 0;
        } else {
            if (e.type.indexOf("mouse") != -1) {
                this.button = e.button;
                /*@cc_on if (e.button & 1) this.button = 0;
      else if (e.button & 4) this.button = 1;
      else if (e.button & 2) this.button = 2; @*/
            }
        }
    }
}
function xAddEventListener(d, c, b, a) {
    if (!(d = xGetElementById(d))) {
        return;
    }
    c = c.toLowerCase();
    if (d.addEventListener) {
        d.addEventListener(c, b, a || false);
    } else {
        if (d.attachEvent) {
            d.attachEvent("on" + c, b);
        } else {
            var f = d["on" + c];
            d["on" + c] = typeof f == "function" ? function (e) {
                f(e);
                b(e);
            } : b;
        }
    }
}
function xCamelize(d) {
    var e, g, b, f;
    b = d.split("-");
    f = b[0];
    for (e = 1; e < b.length; ++e) {
        g = b[e].charAt(0);
        f += b[e].replace(g, g.toUpperCase());
    }
    return f;
}
function xClientHeight() {
    var b = 0, c = document, a = window;
    if ((!c.compatMode || c.compatMode == "CSS1Compat") && c.documentElement && c.documentElement.clientHeight) {
        b = c.documentElement.clientHeight;
    } else {
        if (c.body && c.body.clientHeight) {
            b = c.body.clientHeight;
        } else {
            if (xDef(a.innerWidth, a.innerHeight, c.width)) {
                b = a.innerHeight;
                if (c.width > a.innerWidth) {
                    b -= 16;
                }
            }
        }
    }
    return b;
}
function xClientWidth() {
    var b = 0, c = document, a = window;
    if ((!c.compatMode || c.compatMode == "CSS1Compat") && !a.opera && c.documentElement && c.documentElement.clientWidth) {
        b = c.documentElement.clientWidth;
    } else {
        if (c.body && c.body.clientWidth) {
            b = c.body.clientWidth;
        } else {
            if (xDef(a.innerWidth, a.innerHeight, c.height)) {
                b = a.innerWidth;
                if (c.height > a.innerHeight) {
                    b -= 16;
                }
            }
        }
    }
    return b;
}
function xDef() {
    for (var b = 0, a = arguments.length; b < a; ++b) {
        if (typeof (arguments[b]) === "undefined") {
            return false;
        }
    }
    return true;
}
function xEachE() {
    var c, b = arguments, d = b.length - 1;
    for (c = 0; c < d; ++c) {
        b[d](xGetElementById(b[c]), c);
    }
}
function xEachN(g, a, h, b) {
    var c = xGetElementById(g + a);
    while (c) {
        b(c, a, h);
        c = xGetElementById(g + (++a));
    }
}
function xGetComputedStyle(g, f, c) {
    if (!(g = xGetElementById(g))) {
        return null;
    }
    var d, a = "undefined", b = document.defaultView;
    if (b && b.getComputedStyle) {
        d = b.getComputedStyle(g, "");
        if (d) {
            a = d.getPropertyValue(f);
        }
    } else {
        if (g.currentStyle) {
            a = g.currentStyle[xCamelize(f)];
        } else {
            return null;
        }
    }
    return c ? (parseInt(a) || 0) : a;
}
function xGetElementById(a) {
    if (typeof (a) == "string") {
        if (document.getElementById) {
            a = document.getElementById(a);
        } else {
            if (document.all) {
                a = document.all[a];
            } else {
                a = null;
            }
        }
    }
    return a;
}
function xGetElementsByClassName(k, b, n, h) {
    var a = [], m, j, g, d;
    m = new RegExp("(^|\\s)" + k + "(\\s|$)");
    j = xGetElementsByTagName(n, b);
    for (g = 0, d = j.length; g < d; ++g) {
        if (m.test(j[g].className)) {
            a[a.length] = j[g];
            if (h) {
                h(j[g]);
            }
        }
    }
    return a;
}
function xGetElementsByTagName(a, c) {
    var b = null;
    a = a || "*";
    c = xGetElementById(c) || document;
    if (typeof c.getElementsByTagName != "undefined") {
        b = c.getElementsByTagName(a);
        if (a == "*" && (!b || !b.length)) {
            b = c.all;
        }
    } else {
        if (a == "*") {
            b = c.all;
        } else {
            if (c.all && c.all.tags) {
                b = c.all.tags(a);
            }
        }
    }
    return b || [];
}
function xHasPoint(f, i, g, j, a, h, d) {
    if (!xNum(j)) {
        j = a = h = d = 0;
    } else {
        if (!xNum(a)) {
            a = h = d = j;
        } else {
            if (!xNum(h)) {
                d = a;
                h = j;
            }
        }
    }
    var c = xPageX(f), k = xPageY(f);
    return (i >= c + d && i <= c + xWidth(f) - a && g >= k + j && g <= k + xHeight(f) - h);
}
function xHeight(g, d) {
    var c, f = 0, b = 0, a = 0, i = 0;
    if (!(g = xGetElementById(g))) {
        return 0;
    }
    if (xNum(d)) {
        if (d < 0) {
            d = 0;
        } else {
            d = Math.round(d);
        }
    } else {
        d = -1;
    }
    c = xDef(g.style);
    if (g == document || g.tagName.toLowerCase() == "html" || g.tagName.toLowerCase() == "body") {
        d = xClientHeight();
    } else {
        if (c && xDef(g.offsetHeight) && xStr(g.style.height)) {
            if (d >= 0) {
                if (document.compatMode == "CSS1Compat") {
                    f = xGetComputedStyle(g, "padding-top", 1);
                    if (f !== null) {
                        b = xGetComputedStyle(g, "padding-bottom", 1);
                        a = xGetComputedStyle(g, "border-top-width", 1);
                        i = xGetComputedStyle(g, "border-bottom-width", 1);
                    } else {
                        if (xDef(g.offsetHeight, g.style.height)) {
                            g.style.height = d + "px";
                            f = g.offsetHeight - d;
                        }
                    }
                }
                d -= (f + b + a + i);
                if (isNaN(d) || d < 0) {
                    return;
                } else {
                    g.style.height = d + "px";
                }
            }
            d = g.offsetHeight;
        } else {
            if (c && xDef(g.style.pixelHeight)) {
                if (d >= 0) {
                    g.style.pixelHeight = d;
                }
                d = g.style.pixelHeight;
            }
        }
    }
    return d;
}
function xLeft(c, a) {
    if (!(c = xGetElementById(c))) {
        return 0;
    }
    var b = xDef(c.style);
    if (b && xStr(c.style.left)) {
        if (xNum(a)) {
            c.style.left = a + "px";
        } else {
            a = parseInt(c.style.left);
            if (isNaN(a)) {
                a = xGetComputedStyle(c, "left", 1);
            }
            if (isNaN(a)) {
                a = 0;
            }
        }
    } else {
        if (b && xDef(c.style.pixelLeft)) {
            if (xNum(a)) {
                c.style.pixelLeft = a;
            } else {
                a = c.style.pixelLeft;
            }
        }
    }
    return a;
}
function xMoveTo(b, a, c) {
    xLeft(b, a);
    xTop(b, c);
}
function xNum() {
    for (var b = 0, a = arguments.length; b < a; ++b) {
        if (isNaN(arguments[b]) || typeof (arguments[b]) !== "number") {
            return false;
        }
    }
    return true;
}
function xOffset(d, a) {
    var b = {x:0, y:0};
    d = xGetElementById(d);
    a = xGetElementById(a);
    while (d && d != a) {
        b.x += d.offsetLeft;
        b.y += d.offsetTop;
        d = d.offsetParent;
    }
    return b;
}
function xOpacity(a, b) {
    var c = xDef(b);
    if (!(a = xGetElementById(a))) {
        return 2;
    }
    if (xStr(a.style.opacity)) {
        if (c) {
            a.style.opacity = b + "";
        } else {
            b = parseFloat(a.style.opacity);
        }
    } else {
        if (xStr(a.style.filter)) {
            if (c) {
                a.style.filter = "alpha(opacity=" + (100 * b) + ")";
            } else {
                if (a.filters && a.filters.alpha) {
                    b = a.filters.alpha.opacity / 100;
                }
            }
        } else {
            if (xStr(a.style.MozOpacity)) {
                if (c) {
                    a.style.MozOpacity = b + "";
                } else {
                    b = parseFloat(a.style.MozOpacity);
                }
            } else {
                if (xStr(a.style.KhtmlOpacity)) {
                    if (c) {
                        a.style.KhtmlOpacity = b + "";
                    } else {
                        b = parseFloat(a.style.KhtmlOpacity);
                    }
                }
            }
        }
    }
    return isNaN(b) ? 1 : b;
}
function xPageX(b) {
    var a = 0;
    b = xGetElementById(b);
    while (b) {
        if (xDef(b.offsetLeft)) {
            a += b.offsetLeft;
        }
        b = xDef(b.offsetParent) ? b.offsetParent : null;
    }
    return a;
}
function xPageY(a) {
    var b = 0;
    a = xGetElementById(a);
    while (a) {
        if (xDef(a.offsetTop)) {
            b += a.offsetTop;
        }
        a = xDef(a.offsetParent) ? a.offsetParent : null;
    }
    return b;
}
function xPreventDefault(a) {
    if (a && a.preventDefault) {
        a.preventDefault();
    } else {
        if (window.event) {
            window.event.returnValue = false;
        }
    }
}
function xRemoveEventListener(d, c, b, a) {
    if (!(d = xGetElementById(d))) {
        return;
    }
    c = c.toLowerCase();
    if (d.removeEventListener) {
        d.removeEventListener(c, b, a || false);
    } else {
        if (d.detachEvent) {
            d.detachEvent("on" + c, b);
        } else {
            d["on" + c] = null;
        }
    }
}
function xResizeTo(c, a, b) {
    return {w:xWidth(c, a), h:xHeight(c, b)};
}
function xScrollLeft(c, b) {
    var a, d = 0;
    if (!xDef(c) || b || c == document || c.tagName.toLowerCase() == "html" || c.tagName.toLowerCase() == "body") {
        a = window;
        if (b && c) {
            a = c;
        }
        if (a.document.documentElement && a.document.documentElement.scrollLeft) {
            d = a.document.documentElement.scrollLeft;
        } else {
            if (a.document.body && xDef(a.document.body.scrollLeft)) {
                d = a.document.body.scrollLeft;
            }
        }
    } else {
        c = xGetElementById(c);
        if (c && xNum(c.scrollLeft)) {
            d = c.scrollLeft;
        }
    }
    return d;
}
function xScrollTop(c, b) {
    var a, d = 0;
    if (!xDef(c) || b || c == document || c.tagName.toLowerCase() == "html" || c.tagName.toLowerCase() == "body") {
        a = window;
        if (b && c) {
            a = c;
        }
        if (a.document.documentElement && a.document.documentElement.scrollTop) {
            d = a.document.documentElement.scrollTop;
        } else {
            if (a.document.body && xDef(a.document.body.scrollTop)) {
                d = a.document.body.scrollTop;
            }
        }
    } else {
        c = xGetElementById(c);
        if (c && xNum(c.scrollTop)) {
            d = c.scrollTop;
        }
    }
    return d;
}
function xStopPropagation(a) {
    if (a && a.stopPropagation) {
        a.stopPropagation();
    } else {
        if (window.event) {
            window.event.cancelBubble = true;
        }
    }
}
function xStr(c) {
    for (var b = 0, a = arguments.length; b < a; ++b) {
        if (typeof (arguments[b]) !== "string") {
            return false;
        }
    }
    return true;
}
function xStyle(p, v) {
    var i, e;
    for (i = 2; i < arguments.length; ++i) {
        e = xGetElementById(arguments[i]);
        try {
            e.style[p] = v;
        }
        catch (ex) {
            /*@cc_on
@if (@_jscript_version <= 5.7) // IE7 and down
if(p!='display'){continue;}var s='',t=e.tagName.toLowerCase();switch(t){case'table':case'tr':case'td':case'li':s='block';break;case'caption':s='inline';break;}e.style[p]=s;
@end @*/
        }
    }
}
function xTop(b, c) {
    if (!(b = xGetElementById(b))) {
        return 0;
    }
    var a = xDef(b.style);
    if (a && xStr(b.style.top)) {
        if (xNum(c)) {
            b.style.top = c + "px";
        } else {
            c = parseInt(b.style.top);
            if (isNaN(c)) {
                c = xGetComputedStyle(b, "top", 1);
            }
            if (isNaN(c)) {
                c = 0;
            }
        }
    } else {
        if (a && xDef(b.style.pixelTop)) {
            if (xNum(c)) {
                b.style.pixelTop = c;
            } else {
                c = b.style.pixelTop;
            }
        }
    }
    return c;
}
function xWidth(f, a) {
    var c, d = 0, h = 0, g = 0, b = 0;
    if (!(f = xGetElementById(f))) {
        return 0;
    }
    if (xNum(a)) {
        if (a < 0) {
            a = 0;
        } else {
            a = Math.round(a);
        }
    } else {
        a = -1;
    }
    c = xDef(f.style);
    if (f == document || f.tagName.toLowerCase() == "html" || f.tagName.toLowerCase() == "body") {
        a = xClientWidth();
    } else {
        if (c && xDef(f.offsetWidth) && xStr(f.style.width)) {
            if (a >= 0) {
                if (document.compatMode == "CSS1Compat") {
                    d = xGetComputedStyle(f, "padding-left", 1);
                    if (d !== null) {
                        h = xGetComputedStyle(f, "padding-right", 1);
                        g = xGetComputedStyle(f, "border-left-width", 1);
                        b = xGetComputedStyle(f, "border-right-width", 1);
                    } else {
                        if (xDef(f.offsetWidth, f.style.width)) {
                            f.style.width = a + "px";
                            d = f.offsetWidth - a;
                        }
                    }
                }
                a -= (d + h + g + b);
                if (isNaN(a) || a < 0) {
                    return;
                } else {
                    f.style.width = a + "px";
                }
            }
            a = f.offsetWidth;
        } else {
            if (c && xDef(f.style.pixelWidth)) {
                if (a >= 0) {
                    f.style.pixelWidth = a;
                }
                a = f.style.pixelWidth;
            }
        }
    }
    return a;
}

function xFirstChild(e,t)
{
  e = xGetElementById(e);
  var c = e ? e.firstChild : null;
  while (c) {
    if (c.nodeType == 1 && (!t || c.nodeName.toLowerCase() == t.toLowerCase())){break;}
    c = c.nextSibling;
  }
  return c;
}
function xNextSib(e,t)
{
  e = xGetElementById(e);
  var s = e ? e.nextSibling : null;
  while (s) {
    if (s.nodeType == 1 && (!t || s.nodeName.toLowerCase() == t.toLowerCase())){break;}
    s = s.nextSibling;
  }
  return s;
}